using System;
using Symbonix.Library.DataStructure;
using System.Web.Security;
namespace Symbonix.NorSoNet.Security.BLL.Membership
{

    public abstract class UserBase : IUser
    {

        public abstract DateTime LastLockoutDate
        {
            get;
            set;
        }

        public abstract DateTime LastPasswordChangedDate
        {
            get;
            set;
        }

        public abstract DateTime LastActivityDate
        {
            get;
            set;
        }

        public abstract DateTime LastLoginDate
        {
            get;
            set;
        }

        public abstract DateTime CreationDate
        {
            get;
            set;
        }

        public abstract bool IsLockedOut
        {
            get;
            set;
        }

        public abstract bool IsApproved
        {
            get;
            set;
        }

        public abstract String Comment
        {
            get;
            set;
        }

        public abstract String LastName
        {
            get;
            set;
        }

        public abstract String FirstName
        {
            get;
            set;
        }

        public abstract String Email
        {
            get;
            set;
        }

        public abstract String UserName
        {
            get;
            set;
        }

        public abstract int Id
        {
            get;
            set;
        }


        public abstract bool ChangeEmail(String password, String newEmail);
        public abstract bool ResetPassword(String userName, String newPassword);
        public abstract bool ChangePassword(String oldPassword, String newPassword);
        public abstract ReadWriteCustomCollection<IUser> FindUser(String searchString);
        public abstract IUser GetUserByUserName(String userName);
        public abstract IUser GetUserByEmail(String email);

        public abstract IUser Create(String userName, String password, String email, String firstName, String lastName, string role, bool isApproved, out MembershipCreateStatus status);
        public abstract IUser Load(int id);
        public abstract bool ValidateUser(string username, string password);
        public abstract bool UpdateUserFullName(string firstName, string lastName);
        public abstract bool CreateNewPassword(Guid key, string userEmail, string newPassword);
    }

}
